# 创建列表的两种方式
# 第一种
list1 = ["Hello","Word","你好，世界"];

# 第二种
list2 = list(["Hello","Word","你好，世界"]);
print("集合的长度为 =>",len(list2));
print("集合的的三个位置上的数据是 =>",list2[2]);
print("通过数据获取指定索引 =>",list2.index("Word"));
print("通过区间获取指定索引 =>",list2.index("Word",0,2));

# 切片操作 注意：切片操作时 传入的 start_num,end_num 都是不包括入参位置的，比如 start_num = 1,那就是从列表的第二位开始切
# 调用方式 列表名 [start_num:end_num:step]，切片实际上就是根据指定的位置复制列表数据，创建新的列表
# start_num 可省略 默认为0:end_num:step
# end_num 可省略 start_num:默认为列表的长度索引:step
# step 可省略 start_num:end_num:默认为1，可以写负数,step=负数时 会将列表数据顺序颠倒
list3 = [90,10,42,56,"里斯","张三","王五"];
print(list3[::]); # 全部参数省略不写 1:1:1 [90, 10, 42, 56, '里斯', '张三', '王五']
print(list3[3::]); # end_num,step参数省略不写 3:len(list3):1 [56, '里斯', '张三', '王五']
print(list3[:6:]); # start_num,step参数省略不写 1:6:1 [90, 10, 42, 56, '里斯', '张三']
print(list3[2:5:]); # step参数省略不写 2:5:1 [42, 56, '里斯']
print(list3[::-1]); # start_num:end_num 参数省略不写 1:len(list3):-1 ['王五', '张三', '里斯', 56, 42, 10, 90]

'''---------------------------------- 添加操作 ----------------------------------'''
list4 =["Java","PHP","C++","C#"];
# 在列表末尾插入一条数据
list4.append("尼古拉斯");
print(list4);   # ['Java', 'PHP', 'C++', 'C#', '尼古拉斯']

# 在列表末尾插入至少一条数据
list4.extend(["亚历山大","亚瑟"]);
print(list4); # ['Java', 'PHP', 'C++', 'C#', '尼古拉斯', '亚历山大', '亚瑟']

# 在列表指定位置插入一条数据
list4.insert(5,"intenger");
print(list4); # ['Java', 'PHP', 'C++', 'C#', '尼古拉斯', 'intenger', '亚历山大', '亚瑟']

# 使用切片插入数据
list = ["A","B","C","D"];
list[3:] = list4;
print(list); # ['A', 'B', 'C', 'Java', 'PHP', 'C++', 'C#', '尼古拉斯', 'intenger', '亚历山大', '亚瑟']



'''---------------------------------- 删除操作 ----------------------------------'''
# remove() 根据值去删除，如果不传值会报错，如果列表中有重复数据会删除第一个
list = ["A","B","C","D","E","A"];
list.remove("A");
print(list); # ['B', 'C', 'D', 'E', 'A']

# pop() 根据索引去删除，如果不传索引会删除列表最后一个数据
list.pop(3);
print(list); # ['B', 'C', 'D', 'A']

# 切片删除，但是会产生一个新的列表
list[1:3] = '';
print(list); # ['B', 'A']

list = list[1:3]; # 该方法实际上是使用切片接指定位置的数据切出来，不是真正意义上的删除
print(list); # ['C', 'D']

# clear() 清除列表数据
list.clear();
print(list); # []

# del list 删除列表
list = ["A","B","C","D","E","A"];
del list;
print(list);



'''---------------------------------- 排序操作 ----------------------------------'''
# sort();  可传参指定降序 reverse=True，默认升序（reverse=False）
list = [3,5,1,2,6,9];
list.sort();
print(list);    #[1, 2, 3, 5, 6, 9]

# sorted(); 会产生一个新的列表，可传参指定降序 reverse=True，默认升序（reverse=False）
old_list = [3,5,1,2,6,9];
new_list = sorted(old_list);
print("排序前",old_list,id(old_list));    #排序前 [3, 5, 1, 2, 6, 9] 2683147503424
print("排序后",new_list,id(new_list));    #排序后 [1, 2, 3, 5, 6, 9] 2683147504128


'''---------------------------------- 其他操作 ----------------------------------'''
#列表生成式
arr = [i for i in range(1,10)];
print(arr); #[1, 2, 3, 4, 5, 6, 7, 8, 9]

# 遍历
'''
for item in list1:
    print(id(item));
    print(type(item));
    print(item);
'''
